package nreinas;

import aima.search.framework.HeuristicFunction;

public class ReinasHeuristicFunction implements HeuristicFunction{

	@Override
	public double getHeuristicValue(Object state) {
		ReinasEstado estado = (ReinasEstado) state;
		
		int h = estado.getLado() * estado.getLado();
		
		for (int i=0; i < estado.getLado(); i++)
			for (int j=0; j < estado.getLado(); j++)
				if (estado.getCasilla(i, j) == ReinasEstado.LIBRE)
					h--;
		
		if (estado.getNumReinas() == 0) h = (h + 10) * 100;
		if (estado.getNumReinas() == 1) h = (h + 10) * 10;
		if (estado.getNumReinas() == 2) h = (h + 10) * 2;
		
		return (double) h;
					
	}

}
